g_object_unref (action);
}
-static void
-close_submenus (GtkPopover *popover)
-{
- GtkPopoverMenu *menu;
-
- if (GTK_IS_POPOVER_MENU (popover))
- {
- GtkWidget *submenu;
-
- menu = GTK_POPOVER_MENU (popover);
- submenu = gtk_popover_menu_get_open_submenu (menu);
- if (submenu)
- {
- close_submenus (GTK_POPOVER (submenu));
- gtk_popover_popdown (GTK_POPOVER (submenu));
- gtk_popover_menu_set_open_submenu (menu, NULL);
- }
- }
-}
-
static gboolean
open_submenu (gpointer data)
{
GtkWidget *submenu = button->popover;
if (gtk_popover_menu_get_open_submenu (GTK_POPOVER_MENU (popover)) != submenu)
- close_submenus (popover);
+ gtk_popover_menu_close_submenus (GTK_POPOVER_MENU (popover));
gtk_popover_popup (GTK_POPOVER (submenu));
gtk_popover_menu_set_open_submenu (GTK_POPOVER_MENU (popover), submenu);
menu->open_submenu = submenu;
}
+void
+gtk_popover_menu_close_submenus (GtkPopoverMenu *menu)
+{
+ GtkWidget *submenu;
+
+ submenu = menu->open_submenu;
+ if (submenu)
+ {
+ gtk_popover_menu_close_submenus (GTK_POPOVER_MENU (submenu));
+ gtk_widget_hide (submenu);
+ gtk_popover_menu_set_open_submenu (menu, NULL);
+ }
+}
+
GtkWidget *
gtk_popover_menu_get_active_item (GtkPopoverMenu *menu)
{
GtkWidget *gtk_popover_menu_get_open_submenu (GtkPopoverMenu *menu);
void gtk_popover_menu_set_open_submenu (GtkPopoverMenu *menu,
GtkWidget *submenu);
+void gtk_popover_menu_close_submenus (GtkPopoverMenu *menu);
+
GtkWidget *gtk_popover_menu_get_parent_menu (GtkPopoverMenu *menu);
void gtk_popover_menu_set_parent_menu (GtkPopoverMenu *menu,
GtkWidget *parent);